<?php

namespace Modules\Goods\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Goods\Entities\Attr;
use Modules\Goods\Http\Requests\AttrRequest;

class AttrsController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        //只获取顶级属性的数据
        $attrs = Attr::where('pid',0)->get();
//        dd($attrs->toArray());
        //获取Attr表中所有属性数据，然后展示出来
        $allattr = Attr::getTreeAttr();
        return view('goods::attrs.index',compact('allattr','attrs'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('goods::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(Request $request,AttrRequest $attrRequest)
    {
        //先获取通过post提交的所有属性数据
        $post = $request->all();
        //然后把获取到的数据存入Attr属性表中
        Attr::create($post);
        //设置闪存信息，并返回
        session()->flash('success','属性添加成功');
        return redirect()->route('attrs.index');
    }

    /**
     * Show the specified resource.
     * @return Response
     */
//    public function show()
//    {
//        return view('goods::show');
//    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
//    public function edit()
//    {
//        return view('goods::edit');
//    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(Request $request,AttrRequest $attrRequest,$id)
    {
        //获取对应id的单条数据
        $updateattr = Attr::find($id);
//        dd($updateattr);
        //用提交的新数据替换原来的旧数据
        $updateattr->aname = $request->input('aname');
        $updateattr->pid = $request->input('pid');
//        dd($updateattr);
        //保存一下。然后设置闪存并返回 
        $updateattr->save();
        session()->flash('success','属性名称修改成功');
        return redirect()->back();

    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
        //获取对应id的单条数据
        $delattr = Attr::find($id);

        //获取Attr表中pid这一列的所有值,获得的是一个数组
        $pid = Attr::pluck('pid')->toArray();
//        dd($id);
//        dd($pid);
//        dd(in_array($id,$pid));
        //如果要删除对应id的某条数据，对该条数据进行判断，如果有子级属性，就不允许删除，没有子级属性才可以删除
        //如果当前属性的id存在于$pid这个数组中，就说明有子级，就不允许删除，如果不存在于$pid数组中，就说明没有子级，没有子级才可以进行删除
        if (in_array($id,$pid)){
            session()->flash('danger','不可以删除顶级属性哦');
            return redirect()->back();
        }else{
            //用模块静态调用删除方法
            $delattr->delete();
            session()->flash('success','属性删除成功');
            return redirect()->back();
        }


    }
}
